Calligraphy is an ancient drawing form and derives its name from beautiful or elegant penmanship. On paper a calligraphic stroke is created by a type of pen called a calligraphic pen which has a long narrow nib which allows ink to flow onto the writing surface. There is a basic "grammar" of movements of the calligraphic pen, called strokes, which in proper combinations produces recognizable letter forms or flourishes. The stroke needed to create a calligraphic letter is called its "ductus," from Latin "to draw." A single stroke is created by using one or all of the following traditional techniques: (1) changing the angle of the chiseled nib; (2) changing the pressure of the nib, thus allowing more ink to flow or widening the nib to allow more ink to cover more surface of the paper; and (3) changing the direction of the nib from right to left and up and down. It is the calligrapher's skill in working the interaction of the physical characteristics of the pen with its stroking techniques that ultimately produces calligraphy.
In modern computer systems, a problem results when a user wishes to generate on a computer screen (or on a printer) a curve representative of a calligraphic stroke. One could simulate static calligraphic paths by any manner of methods on the screen. However, to model the direct stroking is quite another task.
Soon after the advent of high-resolution screens and graphical user interfaces, one could find bitmap based "painting" programs containing "brushes" for calligraphy. These "brushes" allowed only a static or unchanging angle. However, one could choose from a pallet of "brush" angles, but the system did not allow for the measuring of pressure for changing the width of the nib. A problem would arise when a mistake was made or one wanted to alter a path. To make corrections meant removing and/or adding pixels to the bitmap image, not a quick process or an easy one. The "brush" movements were accomplished by using a new device called a mouse, producing not very smooth or true freestyle strokes. One could use a graphics "tablet" to aid in producing freestyle strokes; however, nothing else was available for this task.
Thereafter, vector-based "drawing" programs arrived. With these programs a calligraphic path could be hand-built by carefully adding enough points to a path to make it look smooth. This was a tedious and slow process for something which should be simple and direct. Unless one understood the mathematics behind a calligraphic path, one could not accurately model the path's change in angle, pressure or direction. These programs had no pallet "brushes" either. The one key benefit was that a user could make corrections easily and rapidly. Using a graphics tablet provided only speed improvements and more accurate point placement, particularly for tracing.
Finally, the vector-based "drawing" programs moved to using Bezier curves. This new method of creating paths provided speed, ease of use and more accurate modeling of calligraphic strokes. A user could simulate change in angle, pressure and direction. However, one still did not have direct stroking of the path as a whole, only its "control" points used to define the path. Again, using a graphics tablet provided only speed improvements and more accurate point placement. Ideally, a user would want the ease of stroking that a bitmap program provides with the ease of editing a vector-program offers.
One characteristic of a calligraphic pen stroke is that the nib is carried at a specific angle, thus the beginning of a line stroke and the end of that line stroke should have the same angle with respect to the paper or screen.
In the prior art this is not the case. In such prior art systems the angle of the stroke at the end of the stroke does not match the angle of the stroke at the start point. While the precise reasons for these mismatches are known only to the system programmer, they certainly leave a very fundamentally inaccurate and unsatisfying image on the screen or on an electronically printed reproduction.
Accordingly, there is a need in the art for a system and method of creating calligraphic strokes from an off-screen input source, when the source provides data points pertaining to length, direction, angle of attack and line width.
A problem results when a calligraphic stroke crosses over a previous stroke, such as when the user makes an "x", or when the stroke crosses back over itself, such as when the user makes an "e." These are special cases, each of which requires special solutions, particularly if the user is going to edit the stroke and add modifications thereto.
Further problems result when editing is desired to change the width or stroke of the character. The fact that strokes have crossed over themselves creates a difficult task for editing.
Another very serious problem is that often it is desired to perform geometric operations on the calligraphic images, and when they cross over themselves or intersect it is very difficult to perform any of these geometric operations.
A further problem that must be resolved is the removal of self overlap in a figure. Bezier curves present a special problem because Bezier curves can intersect in many different places. This problem has been solved in other systems for straight lines which can intersect at one point or circular arc segments which can intersect in at most two points. Apple Computer has solved it for quadratic lines which again can intersect at most at two points. However, finding the intersection of Bezier curves is a much harder problem. For example, a software system known commercially as Fontographer could not remove the overlap from self-intersecting figures and could not construct all Bezier curves.